package dado;

import java.sql.*;
import java.util.ArrayList;

import organizador.Bibliotecaria;

public class DAOBibliotecaria extends DAODefault{
	
	public void createBibliotecaria(Bibliotecaria bibliotecaria){
		
		String sql = "INSERT INTO Bibliotecaria"+
					  "(nome, sobrenome, email, telefone, cpf, logradouro, cidade, estado)"
				+"VALUES(?,?,?,?,?,?,?,?)";
		
		try {
			stmt = conn.prepareStatement(sql);
			
			stmt.setString(1, bibliotecaria.getNome());
			stmt.setString(2, bibliotecaria.getSobrenome());
			stmt.setString(3, bibliotecaria.getEmail());
			stmt.setString(4, bibliotecaria.getTelefone());
			stmt.setString(5, bibliotecaria.getCpf());
			stmt.setString(6, bibliotecaria.getLogradouro());
			stmt.setString(7, bibliotecaria.getCidade());
			stmt.setString(8, bibliotecaria.getEstado());
			
			stmt.execute();

			stmt.close();

			
		} catch (SQLException e){
			throw new RuntimeException(e);

		}
		
	}
	
	public ArrayList<Bibliotecaria> readBibliotecaria(){
		ArrayList<Bibliotecaria> bibliotecarias = new ArrayList<>();
		String sql = "SELECT * FROM Bibliotecaria";
		
		try {
			stmt = conn.prepareStatement(sql);
			ResultSet rs = stmt.executeQuery();
			while(rs.next()){
				Bibliotecaria bibliotecaria = new Bibliotecaria();
				bibliotecaria.setId(rs.getInt("idBibliotecaria"));
				bibliotecaria.setNome(rs.getString("nome"));
				bibliotecaria.setSobrenome(rs.getString("sobrenome"));
				bibliotecaria.setEmail(rs.getString("email"));
				bibliotecaria.setTelefone(rs.getString("telefone"));
				bibliotecaria.setCpf(rs.getString("cpf"));
				bibliotecaria.setLogradouro(rs.getString("logradouro"));
				bibliotecaria.setCidade(rs.getString("cidade"));
				bibliotecaria.setEstado(rs.getString("estado"));
				bibliotecarias.add(bibliotecaria);
			}
			return bibliotecarias;
		} catch (SQLException e) {
			throw new RuntimeException(e);
		}
		
	}

	public ArrayList<Bibliotecaria> searchBibliotecaria(String dado){
		
		try{
			ArrayList<Bibliotecaria> bibliotecarias = new ArrayList<>();

		
		String sql = "SELECT * FROM Bibliotecaria WHERE NOME = ?  OR SOBRENOME=? OR EMAIL = ? OR" +
				" TELEFONE = ? OR CPF = ?";
		
		
			stmt = conn.prepareStatement(sql);
			

			stmt.setString(1, dado);
			stmt.setString(2, dado);
			stmt.setString(3, dado);
			stmt.setString(4, dado);
			stmt.setString(5, dado);
		
			
			ResultSet rs = stmt.executeQuery();
			
			while(rs.next()){
				
				Bibliotecaria bibliotecariaACME = new Bibliotecaria();
				
			
				bibliotecariaACME.setId(rs.getInt("idBibliotecaria"));
				bibliotecariaACME.setNome(rs.getString("nome"));
				bibliotecariaACME.setSobrenome(rs.getString("sobrenome"));
				bibliotecariaACME.setEmail(rs.getString("email"));
				bibliotecariaACME.setTelefone(rs.getString("telefone"));
				bibliotecariaACME.setCpf(rs.getString("cpf"));
				bibliotecariaACME.setLogradouro(rs.getString("logradouro"));
				bibliotecariaACME.setCidade(rs.getString("cidade"));
				bibliotecariaACME.setEstado(rs.getString("estado"));
				
				bibliotecarias.add(bibliotecariaACME);
			}
			
			return bibliotecarias;
		}
		catch (SQLException e){
			throw new RuntimeException(e);
		}
	}

	public void deleteBibliotecaria(Bibliotecaria bibliotecaria){
		try{
			String sql = "DELETE FROM Bibliotecaria WHERE idBibliotecaria=?";
			
			stmt = conn.prepareStatement(sql);
			stmt.setInt(1, bibliotecaria.getId());
			stmt.execute();
			stmt.close();
		}
		catch (SQLException e){
			throw new RuntimeException(e);
		}
	}

	public void updateBibliotecaria(Bibliotecaria bibliotecaria){
		
		String sql = "UPDATE Bibliotecaria SET " + 
				"nome=?, sobrenome=?, email=?, telefone=?, logradouro=?, cidade=?, estado=? "+
				"where cpf = ?"; 

					  
		
		try {
			stmt = conn.prepareStatement(sql);
			
			stmt.setString(1, bibliotecaria.getNome());
			stmt.setString(2, bibliotecaria.getSobrenome());
			stmt.setString(3, bibliotecaria.getEmail());
			stmt.setString(4, bibliotecaria.getTelefone());
			stmt.setString(5, bibliotecaria.getLogradouro());
			stmt.setString(6, bibliotecaria.getCidade());
			stmt.setString(7, bibliotecaria.getEstado());
			stmt.setString(8, bibliotecaria.getCpf());
			
			stmt.execute();

			stmt.close();

			
			
		} catch (SQLException e){
			throw new RuntimeException(e);

		}
		
	}
	


}
